Augmenting Dynamic Ad Insertion Inventory with Unused Inventory

ABSTRACT

Systems, methods, and devices of the various embodiments may provide for dynamic ad insertion. Systems, methods, and devices of the various embodiments may enable Video-On-Demand (VOD) dynamic ad inventory handling by a network operator. Systems, methods, and devices of the various embodiments may enable augmenting network operator VOD ad inventory in a VOD session.

This application is a divisional application of U.S. patent applicationSer. No. 16/113,806 filed Aug. 27, 2018 entitled “Augmenting Dynamic AdInsertion Inventory With Unused Inventory,” the contents of which ishereby incorporated by reference in its entirety.

BACKGROUND

In conventional Video-On-Demand (VOD) systems, a network operator, suchas a cable company, a multiple-system operator (MSO), etc., utilizes itsnetwork infrastructure to stream VOD content to computing devices ofusers as the users request to view the VOD content. In conventional VODsystems, the VOD content typically has one or more ad opportunitieswithin it at which advertisements can be inserted into the VOD contentfor output to the users while the users are watching the VOD content. Inconventional VOD systems, the one or more ad opportunities can representadvertising inventory.

In conventional VOD systems, typical control of the advertisinginventory is split between the programmer who is provisioning the VODcontent to the network operator and the network operator (e.g., a MSO).For example, a programmer can control eighty five percent of theadvertising inventory as programmer inventory and the network operatorcan control fifteen percent of the advertising inventory as operatorinventory. While programmers and network operators both controladvertising inventory for the same VOD content, in conventional VODsystems programmer inventory is not made available for use by networkoperators. For example, in conventional VOD systems, if the programmercannot sell all its portion of the advertising inventory, there is noway for programmers to send this unsold inventory to the networkoperator. The inability for network operators to utilize programmerinventory in current VOD systems results in lost advertisingopportunities when programmers do not fully utilize all of theirallotted ad opportunities in VOD content.

Additional, in conventional VOD systems, ad request messages, such asVideo Ad Serving Template (VAST) requests according to the InteractiveAdvertising Bureau's (IAB's) Digital Video Committee's VAST Protocol(VAST protocol), placement requests according to the Digital ProgramInsertion-Advertising Systems Interfaces Protocol of the AmericanNational Standards Institute (ANSI)/Society of Cable TelecommunicationsEngineers (SCTE) 130 part 3 (SCTE 130 protocol), etc., and ad responsemessages, such as VAST responses according to the VAST protocol,placement responses according to the SCTE 130 protocol, etc., do notthemselves indicate whether programmers or network operators control(i.e., own) placement opportunities associated with the messages. Thelack of indication as to whether programmers or network operatorscontrol (i.e., own) placement opportunities associated with ad requestmessages and ad response messages in conventional VOD systems canprevent ad placement opportunities that a programmer does not fill frombeing filled by a network operator.

SUMMARY

Systems, methods, and devices of the various embodiments disclosedherein may provide for on-demand dynamic ad insertion. Systems, methods,and devices of the various embodiments may enable Video-On-Demand (VOD)dynamic ad inventory handling by a network operator. Systems, methods,and devices of the various embodiments may enable augmenting networkoperator VOD ad inventory in a VOD session. In various embodiments, adrequest messages, such as Video Ad Serving Template (VAST) requestsaccording to the Interactive Advertising Bureau's (IAB's) Digital VideoCommittee's VAST Protocol (VAST protocol), placement requests accordingto the Digital Program Insertion-Advertising Systems Interfaces Protocolof the American National Standards Institute (ANSI)/Society of CableTelecommunications Engineers (SCTE) 130 part 3 (SCTE 130 protocol),etc., and ad response messages, such as VAST responses according to theVAST protocol, placement responses according to the SCTE 130 protocol,etc., may indicate whether programmers or network operators control(i.e., own) placement opportunities associated with the messages. Thevarious embodiments may provide the ability to indicate whetherprogrammers or network operators control (i.e., own) placementopportunities associated with ad request messages and ad responsemessages, thereby enabling ad placement opportunities that a programmerdoes not fill to be filled by a network operator.

Various embodiments may include a method for ad inventory, such as VODad inventory, handling. The method may be implemented by a server, suchas a server of a network operator (e.g., an inventory optimizationserver). The method may include generating one or more ad inventoryrules based on one or more inventory handling definitions, receiving arules request message for a video session, such as a VOD session, froman ad router server, generating a rules response message for the videosession, the rules response message indicating at least one of thegenerated one or more ad inventory rules, and sending the rules responsemessage for the video session to the ad router server. The generated oneor more ad inventory rules may include rights definitions for the adinventory to direct how one or more Ad Decision Services (ADSs) assignads.

Various embodiments may include a method for augmenting network operatorad inventory, such as VOD ad inventory. The method may be implemented byan ad router server. The method may include determining whether an adresponse message from a programmer server indicates any unusedprogrammer ad inventory is available for a video session, such as a VODsession, generating an ad request message to a network operator serverin response to the ad response message from the programmer serverindicating unused programmer ad inventory is available for the videosession, the ad request message indicating both pre-assigned networkoperator ad inventory and the unused programmer ad inventory, andsending the ad request message to the network operator server.

Various embodiments may include a method for augmenting network operatorad inventory, such as VOD ad inventory. The method may be implemented bynetwork operator server, such as a network operator ADS (e.g.,multiple-system operator (MSO) ADS), network operator ad server, etc.The method may include receiving an ad request message from an ad routerserver, the ad request message indicating both pre-assigned networkoperator ad inventory and unused programmer ad inventory, generating anad response message indicating at least one ad identifier assigned tothe unused programmer ad inventory, and sending the ad response messageto the ad router server.

Further embodiments disclosed herein include a computing device having aprocessor configured with processor-executable instructions to performoperations of the methods summarized above. Further embodimentsdisclosed herein include a computing device including means forperforming functions of the methods summarized above. Furtherembodiments disclosed herein include a non-transitory processor-readablestorage medium having stored thereon processor-executable instructionsconfigured to cause a computing device processor to perform operationsof the methods summarized above. Further embodiments disclosed hereininclude a server configured with processor executable instructions toperform operations of the methods summarized above. Further embodimentsdisclosed herein include a server including means for performingfunctions of the methods summarized above. Further embodiments disclosedherein include a non-transitory processor-readable storage medium havingstored thereon processor-executable instructions configured to cause aserver processor to perform operations o of the methods summarizedabove.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated herein and constitutepart of this specification, illustrate exemplary embodiments, andtogether with the general description given above and the detaileddescription given below, serve to explain the features of variousembodiments.

FIG. 1 is a system block diagram of a Video-On-Demand (VOD) systemaccording to an embodiment.

FIG. 2 is a block diagram illustrating interactions between componentsof an embodiment VOD system.

FIG. 3 is a process flow diagram illustrating an embodiment method forVOD ad insertion.

FIG. 4A is a process flow diagram illustrating an embodiment method fordynamically determining ads for insertion in a VOD session.

FIG. 4B is a process flow diagram illustrating another embodiment methodfor dynamically determining ads for insertion in a VOD session.

FIG. 5 is a process flow diagram illustrating an embodiment method foraugmenting ad inventory with unused ad inventory.

FIG. 6 is a process flow diagram illustrating an embodiment method forgenerating ad inventory handling rules.

FIG. 7 is a process flow diagram illustrating an embodiment method forforecasting ad inventory levels.

FIG. 8 is a component diagram of an example computing device suitablefor use with various embodiments.

FIG. 9 is a component diagram of an example server suitable for use withthe various embodiments.

DETAILED DESCRIPTION

The various embodiments will be described in detail with reference tothe accompanying drawings. Wherever possible, the same reference numberswill be used throughout the drawings to refer to the same or like parts.References made to particular examples and implementations are forillustrative purposes, and are not intended to limit the scope of theinvention or the claims.

As used herein, the term “computing device” is used to refer to any oneor all of satellite or cable set top boxes, laptop computers, rackmounted computers, routers, cellular telephones, smart phones, personalor mobile multi-media players, personal data assistants (PDAs), personalcomputers, tablet computers, smart books, palm-top computers, desk-topcomputers, wireless electronic mail receivers, multimedia Internetenabled cellular telephones, wireless gaming controllers, streamingmedia players (such as, ROKU™), smart televisions, digital videorecorders (DVRs), modems, and similar electronic devices which include aprogrammable processor and memory and circuitry for providing thefunctionality described herein.

The various embodiments are described herein using the term “server” torefer to any computing device capable of functioning as a server, suchas communications server, a name server, a master exchange server, webserver, mail server, document server, database server, route server,content server, or any other type of server. A server may be a dedicatedcomputing device or a computing device including a server module (e.g.,running an application which may cause the computing device to operateas a server). A server module (e.g., server application) may be a fullfunction server module, or a light or secondary server module (e.g.,light or secondary server application) that is configured to providesynchronization services among the dynamic databases on computingdevices. A light server or secondary server may be a slimmed-downversion of server-type functionality that can be implemented on acomputing device thereby enabling it to function as a server only to theextent necessary to provide the functionality described herein.

Systems, methods, and devices of the various embodiments may provide fordynamic ad insertion. Systems, methods, and devices of the variousembodiments may enable Video-On-Demand (VOD) dynamic ad inventoryhandling by a network operator. Systems, methods, and devices of thevarious embodiments may enable augmenting network operator VOD adinventory in a VOD session. The various embodiments may enable VOD adplacement opportunities in a VOD session that a programmer may not fill(i.e., unused ad opportunities) to be transferred to a network operator(e.g., a multiple-system operator (MSO)). In various embodiments, an adrequest message, such as a Video Ad Serving Template (VAST) requestaccording to the Interactive Advertising Bureau's (IAB's) Digital VideoCommittee's VAST Protocol (VAST protocol), a placement request accordingto the Digital Program Insertion-Advertising Systems Interfaces Protocolof the American National Standards Institute (ANSI)/Society of CableTelecommunications Engineers (SCTE) 130 part 3 (SCTE 130 protocol),etc., from an ad router of a network operator may indicate thosetransferred VOD ad placement opportunities that a programmer may notfill (i.e., unused ad opportunities) to a network operator server, suchas a network operator Ad Decision Service (ADS) (e.g., MSO ADS), networkoperator ad server, etc. In various embodiments, the network operatorserver may fill such transferred VOD ad placement opportunities with adsselected by the network operator server. The various embodiments mayenable network operators to meet the needs of advertising suppliers andbuyers that may have ad inventory that is being wasted, such as due to alack of advertising demand, shortages due to high demand, etc.Additionally, the various embodiments may enable network operators toplace regional ads into otherwise national VOD ad placementopportunities that a programmer may not fill (i.e., unused adopportunities). In this manner, the various embodiments may increase theregional focus of advertising.

Various embodiments may enable advertising inventory buyers and sellersto transact and exchange inventory while eliminating dependencies ondedicated inventory exchange systems established between the advertisinginventory buyers and sellers. Various embodiments may provide for theuse of programmer inventory by the network operator (e.g., MSO) withoutcontractual commitment by either the programmer or network for thedelivery or use of that inventory. Various embodiments may enable theuse of programmer inventory by the network operator (e.g., MSO)regardless of a campaign management/decision service in use by theprogrammer or network operator. Various embodiments may provide for theuse of programmer inventory by the operator without the need for mutualmembership in a third-party inventory exchange. In various embodiments,VOD ad placement opportunities that a programmer may not fill (i.e.,unused ad opportunities) may be identified at the edge of VOD sessionprovisioning, potentially at the last possible moment that anopportunity can be leveraged. As VOD ad placement opportunities that aprogrammer may not fill (i.e., unused ad opportunities) may be wasted ifnot used, the various embodiments enabling the use of such unused adopportunities may justify lower commercial rates for the inventory. Invarious embodiments, the use of VOD ad placement opportunities that aprogrammer may not fill (i.e., unused ad opportunities) by a networkoperator (e.g., a MSO) may be secondary to the use of the networkoperator's owned inventory. Various embodiments may enable theforecasting of unused inventory using historical analysis of unusedinventory volumes.

Various embodiments may provide an ad router server of a networkoperator that may be configured to enable augmenting network operatorVOD ad inventory in a VOD session. In various embodiments, when asession qualifies for unused inventory use, the ad router server maydelay the delivery of an ad request message, such as a VAST request, aplacement request, etc., until an ad response message, such as a VASTresponse message, a placement response, etc., has been received from aprogrammer server, such as a programmer ADS, programmer ad server, etc.,and unused inventory identified. The ad router server may then includeboth owned inventory and unused inventory in the same ad requestmessage, such as a VAST request, a placement request, etc., sent to anetwork operator server, such as a network operator ADS (e.g., MSO ADS),network operator ad server, etc. In various embodiments, an ad routerserver may enable consolidating network owned (e.g., MSO owned)opportunities with unused opportunities into a single ad requestmessage, such as a VAST request, a placement request, etc., for a VODbreak and/or VOD session. In various embodiments, an ad router servermay tag unused inventory opportunities within the ad request message,such as a VAST request, a placement request, etc., to designate theopportunities as unused inventory opportunities. In this manner, ownedopportunities may be distinguished from unused inventory opportunitiesby a network server, such as a network operator ADS (e.g., MSO ADS),network operator ad server, etc. The ability to distinguish ownedopportunities from unused inventory opportunities may support the use ofowned inventory by a network server, such as a network operator ADS(e.g., MSO ADS), network operator ad server, etc., before makingplacements within unused inventory.

In various embodiments, an ad router server may determine whether an adresponse message from a programmer server, such as a programmer ADS,programmer ad server, etc., indicates any unused programmer ad inventoryis available for a VOD session. In response to the ad response messagefrom the programmer server indicating unused programmer ad inventory isavailable for the VOD session, the ad router server may generate andsend an ad request message to a network operator server, such as anetwork operator ADS (e.g., MSO ADS), network operator ad server, etc.,indicating both pre-assigned network operator ad inventory (i.e., ownedopportunities of the network operator) and the unused programmer adinventory (i.e., transferred VOD ad placement opportunities that theprogrammer did not fill). In various embodiments, the ad request messagemay be a VAST request according to the VAST protocol, a placementrequest according to the SCTE 130 protocol, etc. In various embodiments,the ad request message may delineate any pre-assigned network operatorad inventory (i.e., owned opportunities of the network operator)separately from any unused programmer ad inventory (i.e., transferredVOD ad placement opportunities that the programmer did not fill). Invarious embodiments, the ad request message may identify the unusedprogrammer ad inventory (i.e., transferred VOD ad placementopportunities that the programmer did not fill), such as by network,opportunity type, mid-roll number, and ad type.

In various embodiments, an ad router server may request unused inventoryrules from an inventory optimization server of a network operator. Invarious embodiments, an inventory optimization server of a networkoperator may enable definition on a per network operator and/or perprogrammer basis of a network operator's rights to use unused inventory(i.e., transferred VOD ad placement opportunities that the programmermay not fill). In various embodiments, such ad inventory rules may bebased on one or more inventory handling definitions provided to theinventory optimization server by programmers and/or network operators.In various embodiments, ad inventory rules may include various limits onhow unused inventory (i.e., transferred VOD ad placement opportunitiesthat the programmer may not fill) may be handled. Such limits mayinclude opportunity type limits (e.g., limiting transfer to pre-roll,mid-roll, and/or post-roll type ads, limiting transfer within mid-rollby mid-roll number, etc.), ad type limits (e.g., limiting transfer topaid ads and/or promo ads, etc.), programmer limits (e.g., limitingtransfer to a certain number of times per programmer, etc.), networklimits (e.g., limiting transfer to a certain number of times per networkoperator), session limits (e.g., limiting transfer to a maximum numberof transfers per VOD session, etc.), time period limits (e.g., limitingtransfer to a maximum number of transfers per day, week, month, year,etc.), break limits (e.g., limiting transfer to a maximum number oftransfers per break period, etc.), content type limits (e.g., limitingtransfer based on the type of content being served in the VOD session,etc.), combinations of those limits (e.g., limits by opportunity typeand ad type, etc.), and/or any other type limits applicable to VOD adplacement. In various embodiments, ad inventory rules may include rightsdefinitions for the ad inventory to direct how one or more ADSs assignads. In various embodiments, an inventory optimization server of anetwork operator may communicate rules response messages to an ad routerserver of the network operator in response to a rules request messagefrom the ad router server. The rules response message may indicateunused inventory rights and inventory limits to the ad router server. Invarious embodiments, the rules response message may indicate that aprogrammer providing content for a VOD session allows for transfer ofunused ad inventory for that VOD session.

In various embodiments, the ad router server may communicate ad metrics,such as harvest metrics, to an inventory optimization server of thenetwork operator. Ad metrics, such as harvest metrics, may include theprogrammer, network, date, time, session, break number, break sequence,and placed ad identifier (when placement occurs) for each unusedprogrammer ad inventory (i.e., transferred VOD ad placementopportunities that the programmer did not fill) supplied to the networkoperator server, such as a network operator ADS (e.g., MSO ADS), networkoperator ad server, etc., in an ad request message. In variousembodiments, an inventory optimization server of the network operatormay evaluate time-based inventory limits based on the received admetrics and may update ad inventory rules based at least in part on thereceived ad metrics. In various embodiments, an inventory optimizationserver of the network operator may forecast ad inventory levels based onthe received ad metrics. In various embodiments, forecasting adinventory levels may be at various confidence levels based on a lengthof time the ad metrics may cover. For example, longer duration coverageby ad metrics may result in higher confidence levels.

In various embodiments, a network operator server, such as a networkoperator ADS (e.g., MSO ADS), network operator ad server, etc., mayreceive an ad request message from an ad router server indicating bothpre-assigned network operator ad inventory and unused programmer adinventory. In various embodiments, the selection of ads to fill in owned(i.e., pre-assigned) and/or unassigned (i.e., transferred VOD adplacement opportunities that the programmer did not fill) inventory maybe handled by a decision service running on a processor of the networkoperator server. In various embodiments, the ad request message may be aVAST request according to the VAST protocol, a placement requestaccording to the SCTE 130 protocol, etc. The network operator server,such as a network operator ADS (e.g., MSO ADS), network operator adserver, etc., may be configured to distinguish between owned andtransferred unused opportunities. In some embodiments, the networkoperator server, such as a network operator ADS (e.g., MSO ADS), networkoperator ad server, etc., may preferential place ads into the ownedopportunities over unused opportunities. For example, the use of unusedopportunities may be restricted to placements from ad campaigns whichare behind plan by a selected percentage. The selected percentage may bea parameter set for each campaign individually. In various embodiments,the option to select ads to fill in owned (i.e., pre-assigned) and/orunassigned (i.e., transferred VOD ad placement opportunities that theprogrammer did not fill) inventory may be controlled by a campaignmanager service running on a processor of the network operator server.The campaign manager service may enable or disable the use of unassigned(i.e., transferred VOD ad placement opportunities that the programmerdid not fill) inventory for an advertising campaign. For example, thecampaign manager service may configure an advertising campaign such thatthe use of unassigned (i.e., transferred VOD ad placement opportunitiesthat the programmer did not fill) is allowed or not allowed for aspecific campaign.

In various embodiments, an ad router server may be configured to offerunused network operator ad inventory to a programmer for use by theprogrammer in providing additional ads. In various embodiments, an adrouter server may determine whether an ad response message from anetwork operator server, such as a MSO ADS, network operator ad server,etc., indicates any unused network operator ad inventory (e.g., unusedpre-assigned network operator ad inventory that the network operator didnot fill) is available for a VOD session. In response to the ad responsemessage from the network operator server (e.g., network operator ADS,MSO ADS, etc.) indicating unused network operator ad inventory isavailable for the VOD session, the ad router server may generate andsend an ad request message to a programmer server, such as a programmerADS, programmer ad server, etc., indicating the unused network operatorad inventory (i.e., transferred VOD ad placement opportunities that thenetwork operator did not fill). In various embodiments, the ad requestmessage may be a VAST request according to the VAST protocol, aplacement request according to the SCTE 130 protocol, etc. In variousembodiments, the ad request message may delineate any pre-assignedprogrammer ad inventory (i.e., owned opportunities of the programmer)separately from any unused network operator ad inventory (i.e.,transferred VOD ad placement opportunities that the network operator didnot fill). In various embodiments, the ad request message may identifythe unused network operator ad inventory (i.e., transferred VOD adplacement opportunities that the network operator did not fill), such asby network, opportunity type, mid-roll number, and ad type.

In various embodiments, a programmer server, such as a programmer ADS,programmer ad server, etc., may receive an ad request message from an adrouter server indicating one or both of pre-assigned programmer adinventory and unused network operator ad inventory. In variousembodiments, the selection of ads to fill in owned (i.e., pre-assigned)and/or unassigned (i.e., transferred VOD ad placement opportunities thatthe network operator did not fill) inventory may be handled by adecision service running on a processor of the programmer server (e.g.,programmer ADS, etc.). In various embodiments, the ad request messagemay be a VAST request according to the VAST protocol, a placementrequest according to the SCTE 130 protocol, etc. The programmer server,such as a programmer ADS, programmer ad server, etc., may be configuredto distinguish between owned and transferred unused opportunities.

Various embodiments may provide a technical solution to the technicalproblem in conventional VOD systems that ad request messages, such asVAST requests according to the VAST protocol, placement requestsaccording to the SCTE 130 protocol, etc., and ad response messages, suchas VAST responses according to the VAST protocol, placement requestsaccording to the SCTE 130 protocol, etc., cannot indicate whetherprogrammers or network operators control (i.e., own) placementopportunities associated with the messages. Various embodiments mayprovide the technical solution, at least in part, by enabling both ownedinventory and unused inventory to be delineated in the same ad requestmessages, such as VAST requests according to the VAST protocol,placement requests according to the SCTE 130 protocol, etc., and/or adresponse messages, such as VAST responses according to the VASTprotocol, placement requests according to the SCTE 130 protocol, etc.Various embodiment may provide a technical solution that may eliminate aneed for a dedicated ad inventory exchange system to be constructedbetween programmers and network operators. Various embodiments mayprovide the technical solution, at least in part, by enabling ad routerservers to support transferring VOD ad placement opportunities in a VODsession that a programmer may not fill (i.e., unused ad opportunities)to a network operator (e.g., a multiple-system operator (MSO)) withoutthe use of a dedicated ad inventory exchange system. Various embodimentsmay provide a technical solution that holds or delays generation andsending of an ad request message, such as a VAST request, a placementrequest, etc., to a network operator server, such as a network operatorADS (e.g., MSO ADS), network operator ad server, etc., until after an adrequest message, such as a VAST request, a placement request, etc., to aprogrammer server, such as a programmer ADS, etc., has been responded toby the programmer server. Various embodiments may improve thefunctioning of VOD systems by enabling VOD ad placement opportunitiesthat a programmer may not fill (i.e., unused ad opportunities) to beidentified while the VOD session is actually being provisioned (e.g.,after a VOD server requests ads for a VOD session initiated by a user'scomputing device). For example, the various embodiments may enable VODad placement opportunities that a programmer may not fill (i.e., unusedad opportunities) to be identified at the edge of VOD sessionprovisioning at the time at which the programmer actually returned an adresponse message, such as a VAST response according to the VASTprotocol, a placement request according to the SCTE 130 protocol, etc.,indicating the programmer did not fill all of its VOD ad placementopportunities. Such last moment identification provided by the variousembodiments may enable network operators to fill those unused adopportunities, thereby preventing the VOD session from including a gapwhere an ad break was not fully filled.

Various examples of video sessions are discussed herein, such as VODsessions, etc. The discussions of specific types of video sessions, suchas VOD sessions, etc., are provided merely as examples to betterillustrate the aspects of the various embodiments and are not intendedto limit the various embodiments in any way. Other types of videosessions may be used with the various embodiments, and the other typesof video sessions may be substituted in the various examples withoutdeparting from the spirit or scope of the invention.

FIG. 1 illustrates an VOD system 100 suitable for use with variousembodiments. The VOD system 100 may include multiple devices, such ascustomer computing device 103, customer-premises equipment (CPE) 107(e.g., cable modems/routers), cable modem termination system (CMTS) 108,VOD server 104, ad router server 105, inventory optimization server 120,MSO ADS 119, and programmer ADS 109. The customer computing device 103may exchange data via one or more wired or wireless connections with theCPE 107. The CPE 107 may be connected via a network, such as a hybridfiber-coaxial (HFC) network, to the CMTS 108 which may exchange data viathe network with the CPE 107. The CMTS 108 may enable data to beexchanged between the customer computing device 103, CPE 107, andvarious devices of the operator network, such as the VOD server 104. Thevarious devices of the operator network, such as the VOD server 104, thead router server 105, the inventory optimization server 120, the MSO ADS119, etc., may exchange data with one another via connections within theoperator network and may exchange data with devices outside the operatornetwork, such as programmer ADS 109 via the operator network'sconnections to the Internet 117.

In various embodiments, the VOD server 104, the ad router server 105,the inventory optimization server 120, the MSO ADS 119, etc., may bevarious different types of servers within the operator network (e.g., anetwork of an MSO). In various embodiments, the VOD server 104 may be aserver providing VOD content from programmers (e.g., Fox, Lifetime,Scripts, Music Choice, etc.) to a user 102 via his or her computingdevice 103. The VOD server 104 may access a content store to provisionselected VOD content to the user 102 for a VOD session. The VOD contentmay include breaks, such as pre-roll, mid-roll, and/or post-roll breaks,in which advertisements (or ads) may be inserted. The breaks in the VODcontent may be defined by an ad map associated with the VOD content. TheVOD server 104 may send an ad placement request for a VOD session to thead router server 105 and in response may receive an ad list for the VODsession. The ad list may identify ads to be inserted into the breaksfrom the content store, and the VOD server 104 may insert the selectedads into the VOD stream based on the ad list. In this manner, the user102 may view the selected ads while watching the VOD content.

In various embodiments, the ad router server 105 may determine ads for aVOD session and generate the ad list for the VOD session based on thedetermined ads. The ad router server 105 may send ad request messages tothe programmer ADS 109 and the MSO ADS 119 to receive indications of theads to select for a VOD session. The programmer who is provisioning theVOD content may control a certain percentage, such as eighty fivepercent of the advertising inventory for a VOD session as programmerinventory and the network operator may control a certain percentage,such as fifteen percent, of the advertising inventory for the VODsession as operator inventory (i.e., owned inventory). In variousembodiments, the programmer ADS 109 may indicate selected ads for theprogrammer inventory to the ad router server 105 and the MSO ADS 119 mayindicate selected ads for the operator inventory (i.e., owned inventory)and optionally any unassigned (i.e., transferred VOD ad placementopportunities that the programmer did not fill) inventory to the adrouter server 105. In various embodiments, when the network operator(e.g., the MSO ADS 119), does not fill all its pre-assigned VOD adplacement opportunities, those unfilled network operator VOD adplacement opportunities may be offered to the programmer (e.g., theprogrammer ADS 109) as transferred VOD ad placement opportunities thatthe network operator did not fill. In this manner, the programmer ADS109 may indicate selected ads for the programmer inventory (i.e., itsowned inventory) and optionally any unassigned (i.e., transferred VOD adplacement opportunities that the network operator did not fill)inventory to the ad router server 105.

In various embodiments, the ad router server 105 may request unusedinventory rules from the inventory optimization server 120. In variousembodiments, the ad router server 105 may communicate ad metrics, suchas harvest metrics, to the inventory optimization server 120. In variousembodiments, the inventory optimization server 120 may enable definitionon a per network operator and/or per programmer basis of a networkoperator's rights to use unused inventory (i.e., transferred VOD adplacement opportunities that the programmer may not fill).

FIG. 2 is a block diagram illustrating interactions between componentsof an embodiment VOD system, such as VOD system 100 described withreference to FIG. 1. With reference to FIGS. 1 and 2, in variousembodiments, the ad router server 105, inventory optimization server120, programmer ADS 109, and MSO ADS 119 may exchange messages with oneanother to enable VOD dynamic ad inventory handling by a networkoperator. Based at least in part on ad inventory rules from theinventory optimization server 120 and an ad response message from theprogrammer ADS 109 indicating that unused programmer ad inventory isavailable for a VOD session, the ad router server 105 may generate andsend an ad request message to the MSO ADS 119 indicating bothpre-assigned network operator ad inventory (i.e., owned opportunities ofthe network operator) and the unused programmer ad inventory (i.e.,transferred VOD ad placement opportunities that the programmer ADS 109did not fill). The unused programmer ad inventory (i.e., transferred VODad placement opportunities that the programmer ADS 109 did not fill) maybe filled with ads by the MSO ADS 119 to augment network operator VOD adinventory in the VOD session. In a similar manner, based at least inpart on ad inventory rules from the inventory optimization server 120and an ad response message from the MSO ADS 119 indicating that unusednetwork operator ad inventory is available for a VOD session, the adrouter server 105 may generate and send an ad request message to theprogrammer ADS 109 indicating one or both of pre-assigned programmer adinventory (i.e., owned opportunities of the programmer) and the unusednetwork operator ad inventory (i.e., transferred VOD ad placementopportunities that the MSO ADS 119 did not fill). The unused networkoperator ad inventory (i.e., transferred VOD ad placement opportunitiesthat the MSO ADS 119 did not fill) may be filled with ads by theprogrammer ADS 109 to augment programmer VOD ad inventory in the VODsession.

In various embodiments, the ad router server 105 may receive a placementrequest for a VOD session from a VOD server, such as VOD server 104. Theplacement request may identify attributes of the VOD session, such asthe VOD content to be streamed for the VOD session, the network overwhich the VOD content may be streamed, the programmer providing thecontent, the ad map for the VOD session, etc. The placement request maybe received in a programmer response evaluation service 202 running on aprocessor of the ad router server 105. Based at least in part on theplacement request for the VOD session, the programmer responseevaluation service 202 may determine one or more attributes of ad breaksin the VOD session. For example, the attributes of the ad breaks in theVOD session that may be determined may include the opportunity types(e.g., pre-roll, mid-roll, and/or post-roll, etc.), break numbers,programmer id, network id, etc.

The ad router server 105 may request unused inventory rules from theinventory optimization server 120 in a rules request message. The rulesrequest message may be a message indicating one or more attributes of adbreaks in the VOD session, such as the opportunity types (e.g.,pre-roll, mid-roll, and/or post-roll, etc.), break numbers, programmerid, network id, etc. The rules request message may be sent from the adrouter server 105 to the inventory optimization server 120.

The inventory optimization server 120 may generate ad inventory rulesbased on inventory handling definitions on a per network operator and/orper programmer basis. The inventory handling definitions may govern anetwork operator's rights to use unused inventory (i.e., transferred VODad placement opportunities that the programmer may not fill). In variousembodiments, such ad inventory rules may be based on one or moreinventory handling definitions provided to the inventory optimizationserver by programmers and/or network operators. In various embodiments,ad inventor rules may include various limits on how unused inventory(i.e., transferred VOD ad placement opportunities that the programmermay not fill) may be handled. Such limits may include opportunity typelimits (e.g., limiting transfer to pre-roll, mid-roll, and/or post-rolltype ads, limiting transfer within mid-roll by mid-roll number, etc.),ad type limits (e.g., limiting transfer to paid ads and/or promo ads,etc.), programmer limits (e.g., limiting transfer to a certain number oftimes per programmer, etc.), network limits (e.g., limiting transfer toa certain number of times per network operator), session limits (e.g.,limiting transfer to a maximum number of transfers per VOD session,etc.), time period limits (e.g., limiting transfer to a maximum numberof transfers per day, week, month, year, etc.), break limits (e.g.,limiting transfer to a maximum number of transfers per break period,etc.), content type limits (e.g., limiting transfer based on the type ofcontent being served in the VOD session, etc.), combinations of thoselimits (e.g., limits by opportunity type and ad type, etc.), and/or anyother type limits applicable to VOD ad placement. The ad inventory rulesmay include rights definitions for the ad inventory to direct how one ormore ADSs assign ads. In various embodiments, an inventory optimizationserver 120 may communicate rules response messages to the ad routerserver 105 in response to the rules request message from the ad routerserver 105. The rules response message may indicate unused inventoryrights and inventory limits to the ad router server 105. In variousembodiments, the rules response message may indicate that a programmerproviding content for a VOD session allows for transfer of unused adinventory for that VOD session.

The ad router server 105 may generate an ad request message to theprogrammer ADS 109 indicating the programmer ad inventory that isavailable for the VOD session. In various embodiments, the ad requestmessage may be a VAST request according to the VAST protocol, aplacement request according to the SCTE 130 protocol, etc. Theprogrammer who is provisioning the VOD content may control a certainpercentage, such as eighty five percent of the advertising inventory fora VOD session as programmer inventory, and the programmer ADS 109 mayselect ads to fill that inventory. However, a portion of that adinventory may go unused by the programmer ADS 109. The programmerresponse evaluation service 202 may receive an ad response message fromthe programmer ADS 109 indicating any ads selected by the programmer ADS109 to fill the programmer inventory. The programmer response evaluationservice 202 may determine whether any of the programmer ad inventory wasunfiled.

In response to the ad response message from the programmer ADS 109indicating unused programmer ad inventory is available for the VODsession, the programmer response evaluation service 202 may indicate theavailability of unused programmer ad inventory to a MSO requestaugmentation service 203 running on a processor of the ad router server105. Via the MSO request augmentation service 203, the ad router server105 may generate and send an ad request message to the MSO ADS 119indicating both pre-assigned network operator ad inventory (i.e., ownedopportunities of the network operator) and the unused programmer adinventory (i.e., transferred VOD ad placement opportunities that theprogrammer did not fill). In various embodiments, the ad request messagemay be a VAST request according to the VAST protocol, a placementrequest according to the SCTE 130 protocol, etc. In various embodiments,the ad request message may identify the unused programmer ad inventory(i.e., transferred VOD ad placement opportunities that the programmerdid not fill), such as by provider, opportunity type, mid-roll number,and ad type.

The MSO ADS 119 may receive the ad request message indicating bothpre-assigned network operator ad inventory and unused programmer adinventory. In various embodiments, the selection of ads to fill in owned(i.e., pre-assigned) and/or unassigned (i.e., transferred VOD adplacement opportunities that the programmer did not fill) inventory maybe handled by a decision service running on a processor of the MSO ADS119. The MSO ADS 119 may be configured to distinguish between owned andtransferred unused opportunities. In some embodiments, the MSO ADS 119may preferential place ads into the owned opportunities over unusedopportunities. For example, the use of unused opportunities may berestricted to placements from ad campaigns which are behind plan by aselected percentage. The selected percentage may be a parameter set foreach campaign individually. In various embodiments, the option to selectads to fill in owned (i.e., pre-assigned) and/or unassigned (i.e.,transferred VOD ad placement opportunities that the programmer did notfill) inventory may be controlled by a campaign manager service runningon a processor of the MSO ADS 119. The campaign manager service mayenable or disable the use of unassigned (i.e., transferred VOD adplacement opportunities that the programmer did not fill) inventory foran advertising campaign. For example, the campaign manager service mayconfigure an advertising campaign such that the use of unassigned (i.e.,transferred VOD ad placement opportunities that the programmer did notfill) is allowed or not allowed for a specific campaign.

In various embodiments, the MSO ADS 119 may generate and send an adresponse message indicating the selected ads. The ad response messagemay delineate any selected ads for pre-assigned network operator adinventory (i.e., owned opportunities of the network operator) separatelyfrom any selected ads to fill unused programmer ad inventory (i.e.,transferred VOD ad placement opportunities that the programmer did notfill). In various embodiments, the ad response message may identify theads assigned to the unused programmer ad inventory (i.e., transferredVOD ad placement opportunities that the programmer did not fill), suchas by network, opportunity type, mid-roll number, and ad type.

In some embodiments, a portion of that ad inventory may go unused by theMSO ADS 119. The MSO request augmentation service 203 may receive an adresponse message from the MSO ADS 119 indicating any ads selected by theMSO ADS 119 to fill the network operator inventory and/or transferredVOD ad placement opportunities that the programmer did not fill. The MSOrequest augmentation service 203 may determine whether any of thenetwork operator ad inventory was unfilled.

In response to the ad response message from the MSO ADS 119 indicatingunused network operator ad inventory is available for the VOD session,the MSO request augmentation service 203 may indicate the availabilityof unused network operator ad inventory to the programmer responseevaluation service 202 running on a processor of the ad router server105. Via the programmer response evaluation service 202, the ad routerserver 105 may generate and send an ad request message to the programmerADS 109 indicating one or both of pre-assigned programmer operator adinventory (i.e., owned opportunities of the programmer) and the unusednetwork operator ad inventory (i.e., transferred VOD ad placementopportunities that the network operator did not fill). In variousembodiments, the ad request message may be a VAST request according tothe VAST protocol, a placement request according to the SCTE 130protocol, etc. In various embodiments, the ad request message mayidentify the unused network operator ad inventory (i.e., transferred VODad placement opportunities that the network operator did not fill), suchas by provider, opportunity type, mid-roll number, and ad type.

The programmer ADS 109 may receive the ad request message indicating oneor both of pre-assigned programmer operator ad inventory and unusednetwork operator ad inventory. In various embodiments, the selection ofads to fill in owned (i.e., pre-assigned) and/or unassigned (i.e.,transferred VOD ad placement opportunities that the network operator didnot fill) inventory may be handled by a decision service running on aprocessor of the programmer ADS 109. The programmer ADS 119 may beconfigured to distinguish between owned and transferred unusedopportunities. In various embodiments, the programmer ADS 119 maygenerate and send an ad response message indicating the selected ads.The ad response message may delineate any selected ads for pre-assignedprogrammer ad inventory (i.e., owned opportunities of the programmer)separately from any selected ads to fill unused network operator adinventory (i.e., transferred VOD ad placement opportunities that thenetwork operator did not fill). In various embodiments, the ad responsemessage may identify the ads assigned to the unused network operator adinventory (i.e., transferred VOD ad placement opportunities that thenetwork operator did not fill), such as by network, opportunity type,mid-roll number, and ad type.

The ad router server 105 may generate an ad list for the VOD session andsend the ad list to the VOD server. In various embodiments, the adrouter server 105 may communicate ad metrics, such as harvest metrics,to the inventory optimization server 120. Ad metrics, such as harvestmetrics, may include the programmer, network, date, time, session, breaknumber, break sequence, and placed ad identifier (when placement occurs)for each unused programmer ad inventory (i.e., transferred VOD adplacement opportunities that the programmer did not fill) supplied tothe MSO ADS 119 in an ad request message. In various embodiments, theinventory optimization server 120 may evaluate time-based inventorylimits based on the received ad metrics and may update ad inventoryrules based at least in part on the received ad metrics. In variousembodiments, a forecasting service running on a processor of theinventory optimization server 120 may forecast ad inventory levels basedon the received ad metrics. In various embodiments, forecasting adinventory levels may be at various confidence levels based on a lengthof time the ad metrics may cover. For example, longer duration coverageby ad metrics may result in higher confidence levels.

While illustrated as separate devices in FIGS. 1 and 2, the inventoryoptimization server 120, the ad router server 105, and MSO ADS 119, thisis only one example configuration of a VOD system according to thevarious embodiments and other configurations of the inventoryoptimization server 120, the ad router server 105, and MSO ADS 119 maybe substituted in the various examples. For example, the inventoryoptimization server 120, the ad router server 105, and MSO ADS 119 maybe different server modules running on the same computing device.

FIG. 3 is a process flow diagram illustrating an embodiment method 300for VOD ad insertion. With reference to FIGS. 1-3, in variousembodiments, the operations of method 300 may be performed by a VODserver, such as VOD server 104 in communication with an ad routerserver, such as ad router server 105.

In block 302, the VOD server may receive a VOD session request. A VODsession request may be a message received from a computing deviceassociated with a user desiring to view VOD content. The VOD sessionrequest may identify the VOD content to be viewed, the network used bythe computing device to stream the VOD session, etc.

In block 304, the VOD server may determine one or more VOD sessionattributes. The VOD session attributes may be parameters of the VODsession, such as the VOD content identifier, an identifier of theprogrammer providing the VOD content, an identifier of the network usedby the computing device to stream the VOD session, an ad map for the VODsession, etc.

In block 306, the VOD server may generate and send an ad placementrequest for the VOD session to the ad router server. The ad placementrequest may indicate one or more of the determined VOD sessionattributes. In block 308, the ad router server may receive the adplacement request for the VOD session. In block 310, the ad routerserver may determine one or more ads for the VOD session. In variousembodiments, the ad router server may be configured to augment networkoperator VOD ad inventory in a VOD session with transferred VOD adplacement opportunities that a programmer may not fill (i.e., unused adopportunities). For example, the ad router server may determine the oneor more ads for the VOD session according to the operations of method400 described with reference to FIG. 4.

In block 312, the ad router server may generate an ad list for the VODsession based on the determined one or more ads. The ad list mayidentify the ad ids of ads to be inserted into the breaks of the VODsession. In block 314, the ad router server may send the ad list for theVOD session to the VOD server. In block 322, the ad router server maysend ad metrics. In various embodiments, the ad router server maycommunicate ad metrics, such as harvest metrics, to an inventoryoptimization server. Ad metrics, such as harvest metrics, may includethe programmer, network, date, time, session, break number, breaksequence, and placed ad identifier (when placement occurs) for eachunused programmer ad inventory (i.e., transferred VOD ad placementopportunities that the programmer did not fill).

In block 316, the VOD server may receive the ad list for the VODsession. The ad list may identify ads to be inserted into the breaksfrom the content store available to the VOD server. In block 318, theVOD server may insert the selected ads into the VOD stream for thesession based on the ad list for the VOD session. In block 320, the VODserver may send the VOD stream. In this manner, the user may view theselected ads while watching the VOD content.

FIG. 4A is a process flow diagram illustrating an embodiment method 400for dynamically determining ads for insertion in a VOD session. Withreference to FIGS. 1-4A, the operations of method 400 may be performedby an ad router server, such as ad router server 105. In variousembodiments, the operations of method 400 may be performed inconjunction with the operations of method 300 (FIG. 3) to determine oneor more ads for the VOD session in block 310.

In response to receiving an ad placement request for the VOD session(block 308 of method 300), the ad router server may determine aprogrammer and network operator (e.g., an MSO) associated with the VODsession in block 402. In various embodiments, the ad router server maydetermine the programmer and network operator (e.g., an MSO) for the VODsession based on VOD session attributes in the ad placement requestmessage.

In block 404, the ad router server may determine the pre-assigned adinventory for the VOD session. The pre-assigned ad inventory may includeboth pre-assigned programmer ad inventory (i.e., those ad inventoryopportunities owned by the programmer) and pre-assigned network operatorad inventory (i.e., owned opportunities of the network operator).

In block 406, the ad router server may generate and send a rules requestmessage for the VOD session. The rules request message may be a messagerequesting ad inventor rules for the VOD session. The rules requestmessage may identify the programmer and the network operator (e.g., MSO)associated with the VOD session.

In block 408, the ad router server may receive a rules response messagefor the VOD session. The rules response message may be a messageincluding indications of one or more ad inventory rules applicable tothe VOD session. In various embodiments, such ad inventory rules may bebased on one or more inventory handling definitions provided to aninventory optimization server by programmers and/or network operators.In various embodiments, ad inventor rules may include various limits onhow unused inventory (i.e., transferred VOD ad placement opportunitiesthat the programmer may not fill) may be handled. Such limits mayinclude opportunity type limits (e.g., limiting transfer to pre-roll,mid-roll, and/or post-roll type ads, limiting transfer within mid-rollby mid-roll number, etc.), ad type limits (e.g., limiting transfer topaid ads and/or promo ads, etc.), programmer limits (e.g., limitingtransfer to a certain number of times per programmer, etc.), networklimits (e.g., limiting transfer to a certain number of times per networkoperator), session limits (e.g., limiting transfer to a maximum numberof transfers per VOD session, etc.), time period limits (e.g., limitingtransfer to a maximum number of transfers per day, week, month, year,etc.), break limits (e.g., limiting transfer to a maximum number oftransfers per break period, etc.), content type limits (e.g., limitingtransfer based on the type of content being served in the VOD session,etc.), combinations of those limits (e.g., limits by opportunity typeand ad type, etc.), and/or any other type limits applicable to VOD adplacement. For example, an ad inventory rule may indicate that a certainprogrammer has agreed with a certain network operator to allow mid-rollad inventory to be transferred from the programmer to the networkoperator limited to two transfers per break period. As another example,an ad inventory rule may indicate that no ad inventory may betransferred. As a further example, an ad inventory rule may indicatethat all ad inventory may be transferred.

In determination block 410, the ad router server may determine whetherone or more ad inventory rules allow for the transfer of unused adinventory. In response to the ad inventory rules not allowing fortransfer of unused ad inventory (i.e., determination block 410=“No”),the ad router server may generate and send ad request messages to theprogrammer ADS and MSO ADS in parallel based on the pre-assigned adinventory in block 412. In various embodiments, the ad request messagesmay be VAST requests according to the VAST protocol, placement requestsaccording to the SCTE 130 protocol, etc. In block 414, the ad routerserver may receive an ad response message from the programmer ADS andMSO ADS and proceed to block 312 of method 300. In various embodiments,the ad response messages may be VAST responses according to the VASTprotocol, placement responses according to the SCTE 130 protocol, etc.

In response to the ad inventory rules allowing for transfer of unused adinventory (i.e., determination block 410=“Yes”), the ad router servermay generate and send an ad request message to the programmer ADS basedon the pre-assigned ad inventory in block 416. In various embodiments,the ad request message may be a VAST request according to the VASTprotocol, a placement request according to the SCTE 130 protocol, etc.The ad router server may hold any ad request to the MSO ADS until aresponse from the programmer ADS is received. In this manner, the adrouter server may create the opportunity to determine whether there maybe any unused programmer ad inventory for the VOD session.

In block 418, the ad router server may receive an ad response messagefrom the programmer ADS. In various embodiments, the ad response messagemay be a VAST response according to the VAST protocol, a placementresponse according to the SCTE 130 protocol, etc. In determination block420, the ad router server may determine whether there is any unusedprogrammer ad inventory. The programmer ADS may not always selectsufficient ads to fill all the ad inventory owned by the programmer, andthe ad response message may indicate less selected ads than wereidentified as available in the ad request message. The ad router servermay compare the number of ads in the ad response message to the numberof ads owned by the programmer for the VOD session to determine whetherthere is any unused programmer ad inventory. The number of ads in the adresponse message being less than the number of ads owned by theprogrammer for the VOD session may indicate there is unused programmerad inventory. In response to determining that there is no unusedprogrammer ad inventory (i.e., determination block 420=“No”), the adrouter server may generate and send an ad request message to the MSO ADSbased on pre-assigned inventory in block 424. In various embodiments,the ad request message may be a VAST request according to the VASTprotocol, a placement request according to the SCTE 130 protocol, etc.

In response to determining that there is unused programmer ad inventory(i.e., determination block 420=“Yes”), the ad router server may generateand send an ad request message to the MSO ADS based on pre-assigned adinventory and unused programmer ad inventory according to the adinventory rules in block 422. In various embodiments, the ad routerserver may determine whether any limits defined in the ad inventoryrules have been met or exceeded before generating the ad requestmessage. In various embodiments, the ad request message may be a VASTrequest according to the VAST protocol, a placement request according tothe SCTE 130 protocol, etc. In various embodiments, the ad requestmessage may delineate any pre-assigned network operator ad inventory(i.e., owned opportunities of the network operator) separately from anyunused programmer ad inventory (i.e., transferred VOD ad placementopportunities that the programmer did not fill). For example, unusedprogrammer ad inventory opportunities may be tagged as such in the adrequest message. In various embodiments, the ad request message mayidentify the unused programmer ad inventory (i.e., transferred VOD adplacement opportunities that the programmer did not fill), such as byprogrammer, opportunity type, and ad type.

In block 426, the ad router server may receive an ad response messagefrom the MSO ADS and proceed to block 312 of method 300. The ad responsemessage may be a VAST response according to the VAST protocol, aplacement response according to the SCTE 130 protocol, etc. The adresponse message may delineate any ads selected for pre-assigned networkoperator ad inventory (i.e., owned opportunities of the networkoperator) separately from any ads selected for unused programmer adinventory (i.e., transferred VOD ad placement opportunities that theprogrammer did not fill).

FIG. 4B is a process flow diagram illustrating an embodiment method 450for dynamically determining ads for insertion in a VOD session. Withreference to FIGS. 1-4B, the operations of method 450 may be performedby an ad router server, such as ad router server 105. In variousembodiments, the operations of method 450 may be performed inconjunction with the operations of method 300 (FIG. 3) to determine oneor more ads for the VOD session in block 310. In blocks 402-426, the adrouter server may perform operations of like numbered blocks of method400 described with reference to FIG. 4.

In determination block 452, the ad router server may determine whetherthere is any unused network operator ad inventory. The MSO ADS may notalways select sufficient ads to fill all the ad inventory owned by thenetwork operator, and the ad response message may indicate less selectedads than were identified as available in the ad request message. The adrouter server may compare the number of ads in the ad response messageto the number of ads owned by the network operator for the VOD sessionto determine whether there is any unused network operator ad inventory.The number of ads in the ad response message being less than the numberof ads owned by the network operator for the VOD session may indicatethere is unused network operator ad inventory. In response todetermining that there is no unused network operator ad inventory (i.e.,determination block 452=“No”), the ad router server may proceed to block312 of method 300.

In response to determining that there is unused network operator adinventory (i.e., determination block 452=“Yes”), the ad router servermay generate and send an ad request message to the programmer ADS basedon unused network operator ad inventory according to the ad inventoryrules in block 452. In various embodiments, the ad router server maydetermine whether any limits defined in the ad inventory rules have beenmet or exceeded before generating the ad request message. In variousembodiments, the ad request message may be a VAST request according tothe VAST protocol, a placement request according to the SCTE 130protocol, etc. In various embodiments, the ad request message maydelineate any pre-assigned programmer ad inventory (i.e., ownedopportunities of the programmer) separately from any unused networkoperator ad inventory (i.e., transferred VOD ad placement opportunitiesthat the network operator did not fill). For example, unused networkoperator ad inventory opportunities may be tagged as such in the adrequest message. In various embodiments, the ad request message mayidentify the unused network operator ad inventory (i.e., transferred VODad placement opportunities that the network operator did not fill), suchas by programmer, opportunity type, and ad type. In block 456, the adrouter server may receive an ad response message from the programmer ADSand proceed to block 312 of method 300. The ad response message may be aVAST response according to the VAST protocol, a placement responseaccording to the SCTE 130 protocol, etc. The ad response message maydelineate any ads selected for pre-assigned programmer ad inventory(i.e., owned opportunities of the programmer) separately from any adsselected for unused network operator ad inventory (i.e., transferred VODad placement opportunities that the network operator did not fill).

FIG. 5 is a process flow diagram illustrating an embodiment method 500for augmenting ad inventory, such as augmenting network operator adinventory with unused programmer ad inventory and/or augmentingprogrammer ad inventory with unused network operator ad inventory. Withreference to FIGS. 1-4B, the operations of method 500 may be performedby a network operator server, such as a network operator ADS, networkoperator ad server, etc., and/or may be performed by a programmerserver, such as a programmer ADS, programmer ad server, etc. As aspecific example, the network operator server may be an MSO ADS 119. Asanother specific example, the programmer server may be an programmer ADS109. In various embodiments, the operations of method 500 may beperformed in conjunction with the operations of methods 300, 400, and450.

In block 502, the MSO ADS or programmer ADS may receive an ad requestmessage from an ad router server. In various embodiments, the ad requestmessage may be a VAST request according to the VAST protocol, aplacement request according to the SCTE 130 protocol, etc.

In determination block 504, the MSO ADS or programmer ADS may determinewhether any transferred ad inventory is identified in the ad requestmessage. In various embodiments, the ad request message may delineateany pre-assigned network operator ad inventory (i.e., ownedopportunities of the network operator) separately from any unusedprogrammer ad inventory (i.e., transferred VOD ad placementopportunities that the programmer did not fill). For example, unusedprogrammer ad inventory opportunities may be tagged as such in the adrequest message. In various embodiments, the ad request message maydelineate any pre-assigned programmer ad inventory (i.e., ownedopportunities of the programmer) separately from any unused networkoperator ad inventory (i.e., transferred VOD ad placement opportunitiesthat the network operator did not fill). For example, unused networkoperator ad inventory opportunities may be tagged as such in the adrequest message. The MSO ADS or programmer ADS may parse the ad requestmessage to detect the presence of any indications associated with unusedprogrammer ad inventory or unused network operator ad inventory,respectively, to determine whether any transferred ad inventory isidentified in the ad request message. The presence of indicationsassociated with unused programmer ad inventory or the presence ofindications associated with unused network operator ad inventory mayindicate transferred ad inventory is identified in the ad requestmessage.

In response to determining that transferred ad inventory is indicated inthe ad request message (i.e., determination block 504=“Yes”), the MSOADS or programmer ADS may apply ad inventory rules to select one or moreads for pre-assigned ad inventory and transferred ad inventory in block508. For example, ad inventory rules may require the use of ownedinventory before making placements within unused inventory and the MSOADS or programmer ADS may fill all available owned inventoryopportunities before transferred opportunities. In some embodiments, theMSO ADS or programmer ADS may preferential place ads into the ownedopportunities over unused opportunities. For example, the use of unusedopportunities may be restricted to placements from ad campaigns whichare behind plan by a selected percentage. The selected percentage may bea parameter set for each campaign individually.

In response to determining that no transferred ad inventory is indicatedin the ad request message (i.e., determination block 504=“No”), the MSOADS or programmer ADS may apply ad inventory rules to select one or moreads for pre-assigned ad inventory in block 506.

In block 510, the MSO ADS or programmer ADS may generate and send an adresponse message indicating the selected ads. In various embodiments,the ad response message may be a VAST request according to the VASTprotocol, a placement request according to the SCTE 130 protocol, etc.When the MSO ADS generates the ad response message, the ad responsemessage may delineate any ads selected for pre-assigned network operatorad inventory (i.e., owned opportunities of the network operator)separately from any ads selected for unused programmer ad inventory(i.e., transferred VOD ad placement opportunities that the programmerdid not fill). When the programmer ADS generates the ad responsemessage, the ad response message may delineate any ads selected forpre-assigned programmer ad inventory (i.e., owned opportunities of theprogrammer) separately from any ads selected for unused network operatorad inventory (i.e., transferred VOD ad placement opportunities that thenetwork operator did not fill).

FIG. 6 is a process flow diagram illustrating an embodiment method 600for generating ad inventory handling rules. With reference to FIGS. 1-6,the operations of method 600 may be performed by a network server, suchas an inventory optimization server 120. In various embodiments, theoperations of method 600 may be performed in conjunction with theoperations of methods 300, 400, 450, and 500.

In block 602, the inventory optimization server may receive programmerinventory handling definitions. Programmer inventory handlingdefinitions may define a programmer's agreement to allow unusedinventory (i.e., transferred VOD ad placement opportunities that theprogrammer may not fill) to be used by an MSO. In block 604, theinventory optimization server may receive an MSO inventory handlingdefinition. An MSO inventory handling definition may define MSO'swillingness to use unused inventory (i.e., transferred VOD ad placementopportunities that the programmer may not fill).

In block 606, the inventory optimization server may receive ad metrics.Ad metrics, such as harvest metrics, may include the programmer,network, date, time, session, break number, break sequence, and placedad identifier (when placement occurs) for each unused programmer adinventory (i.e., transferred VOD ad placement opportunities that theprogrammer did not fill).

In block 608, the inventory optimization server may generate adinventory rules based on inventory handling definitions and ad metrics.In various embodiments, ad inventor rules may include various limits onhow unused inventory (i.e., transferred VOD ad placement opportunitiesthat the programmer may not fill) may be handled. Such limits mayinclude opportunity type limits (e.g., limiting transfer to pre-roll,mid-roll, and/or post-roll type ads, limiting transfer within mid-rollby mid-roll number, etc.), ad type limits (e.g., limiting transfer topaid ads and/or promo ads, etc.), programmer limits (e.g., limitingtransfer to a certain number of times per programmer, etc.), networklimits (e.g., limiting transfer to a certain number of times per networkoperator), session limits (e.g., limiting transfer to a maximum numberof transfers per VOD session, etc.), time period limits (e.g., limitingtransfer to a maximum number of transfers per day, week, month, year,etc.), break limits (e.g., limiting transfer to a maximum number oftransfers per break period, etc.), content type limits (e.g., limitingtransfer based on the type of content being served in the VOD session,etc.), combinations of those limits (e.g., limits by opportunity typeand ad type, etc.), and/or any other type limits applicable to VOD adplacement.

In block 610, the inventory optimization server may receive a rulesrequest for a VOD session. The rules request message may be a messagerequesting ad inventory rules for the VOD session. The rules requestmessage may identify the programmer and the network operator (e.g., MSO)associated with the VOD session. In block 612, the inventoryoptimization server may generate and send a rules response for the VODsession. The rules response message may be a message includingindications of one or more ad inventory rules applicable to the VODsession. The inventory optimization server may generate the rulesresponse message by comparing the programmer and/or network operator(e.g., MSO) indicated in the rules request message to the ad inventoryrules. Matching ad inventory rules may be included in the rules responsemessage.

FIG. 7 is a process flow diagram illustrating an embodiment method forforecasting ad inventory levels. With reference to FIGS. 1-7, theoperations of method 700 may be performed by a network server, such asan inventory optimization server 120. In various embodiments, theoperations of method 700 may be performed in conjunction with theoperations of methods 300, 400, 450, 500, and 600.

In block 606, the inventory optimization server may receive ad metricsas described with reference to method 600. In block 702, the inventoryoptimization server may forecast ad inventory levels based on the admetrics. In various embodiments, forecasting ad inventory levels mayinclude estimating the combined availability of unused programmer adsand owned ad opportunities for VOD content in the future based on pastavailability of unused programmer ads and owned ad opportunities forthat VOD content. In various embodiments, forecasting ad inventorylevels may be at various confidence levels based on a length of time thead metrics may cover. For example, longer duration coverage by admetrics may result in higher confidence levels. Various embodiments mayenable the forecasting of unused inventory using historical analysis ofunused inventory volumes.

In block 704, the inventory optimization server may send forecasted adinventory indications. For example, the inventory optimization servermay send the forecasted ad inventory indications to computing devices ofad sellers and/or ad buyers. In this manner, ad sellers and/or ad buyersmay forecast advertising demands and shortages.

Various embodiments illustrated and described are provided merely asexamples to illustrate various features of the claims. However, featuresshown and described with respect to any given embodiment are notnecessarily limited to the associated embodiment and may be used orcombined with other embodiments that are shown and described. Further,the claims are not intended to be limited by any one example embodiment.For example, one or more of the operations of the methods 300, 400, 450,500, 600, and 700 may be substituted for or combined with one or moreoperations of the methods 300, 400, 450, 500, 600, and 700 and viceversa.

The various embodiments (including, but not limited to, embodimentsdiscussed above with reference to FIGS. 1-7) described above may also beimplemented within a variety of computing devices, such as a laptopcomputer 810 as illustrated in FIG. 8. Many laptop computers include atouch pad touch surface 817 that serves as the computer's pointingdevice, and thus may receive drag, scroll, and flick gestures similar tothose implemented on mobile computing devices equipped with a touchscreen display and described above. A laptop computer 810 will typicallyinclude a processor 811 coupled to volatile memory 812 and a largecapacity nonvolatile memory, such as a disk drive 813 of Flash memory.The laptop computer 810 may also include a floppy disc drive 814 and acompact disc (CD) drive 815 coupled to the processor 811. The laptopcomputer 810 may also include a number of connector ports coupled to theprocessor 811 for establishing data connections or receiving externalmemory devices, such as a USB or FireWire® connector sockets, or othernetwork connection circuits (e.g., interfaces) for coupling theprocessor 811 to a network. In a notebook configuration, the computerhousing may include the touchpad 817, the keyboard 818, and the display819 all coupled to the processor 811. Other configurations of thecomputing device may include a computer mouse or trackball coupled tothe processor (e.g., via a USB input) as are well known, which may alsobe used in conjunction with the various embodiments.

Various embodiments (including, but not limited to, embodimentsdiscussed above with reference to FIGS. 1-7) may be implemented on anyof a variety of commercially available server devices, such as theserver device 900 illustrated in FIG. 9. Such a server device 900 mayinclude a processor 901 coupled to volatile memory 902 and a largecapacity nonvolatile memory, such as a disk drive 903. The server device900 may also include a floppy disc drive, compact disc (CD) or DVD discdrive 904 coupled to the processor 901. The server device 900 may alsoinclude network access ports 906 coupled to the processor 901 forestablishing data connections with a network connection circuit 905 anda communication network (e.g., IP network) coupled to othercommunication system network elements.

The processors 811, 901 may be any programmable microprocessor,microcomputer or multiple processor chip or chips that can be configuredby software instructions (applications) to perform a variety offunctions, including the functions of the various embodiments describedabove. In some devices, multiple processors may be provided, such as oneprocessor dedicated to wireless communication functions and oneprocessor dedicated to running other applications. Typically, softwareapplications may be stored in the internal memory before they areaccessed and loaded into the processors 811, 901. The processors 811,901 may include internal memory sufficient to store the applicationsoftware instructions. In many devices, the internal memory may be avolatile or nonvolatile memory, such as flash memory, or a mixture ofboth. For the purposes of this description, a general reference tomemory refers to memory accessible by the processors 811, 901 includinginternal memory or removable memory plugged into the device and memorywithin the processors 811, 901 themselves.

The foregoing method descriptions and the process flow diagrams areprovided merely as illustrative examples and are not intended to requireor imply that the steps of the various embodiments must be performed inthe order presented. As will be appreciated by one of skill in the artthe order of steps in the foregoing embodiments may be performed in anyorder. Words such as “thereafter,” “then,” “next,” etc. are not intendedto limit the order of the steps; these words are simply used to guidethe reader through the description of the methods. Further, anyreference to claim elements in the singular, for example, using thearticles “a,” “an” or “the” is not to be construed as limiting theelement to the singular.

The various illustrative logical blocks, modules, circuits, andalgorithm steps described in connection with the embodiments disclosedherein may be implemented as electronic hardware, computer software, orcombinations of both. To clearly illustrate this interchangeability ofhardware and software, various illustrative components, blocks, modules,circuits, and steps have been described above generally in terms oftheir functionality. Whether such functionality is implemented ashardware or software depends upon the particular application and designconstraints imposed on the overall system. Skilled artisans mayimplement the described functionality in varying ways for eachparticular application, but such implementation decisions should not beinterpreted as causing a departure from the scope of the presentinvention.

The hardware used to implement the various illustrative logics, logicalblocks, modules, and circuits described in connection with the aspectsdisclosed herein may be implemented or performed with a general purposeprocessor, a digital signal processor (DSP), an application specificintegrated circuit (ASIC), a field programmable gate array (FPGA) orother programmable logic device, discrete gate or transistor logic,discrete hardware components, or any combination thereof designed toperform the functions described herein. A general-purpose processor maybe a microprocessor, but, in the alternative, the processor may be anyconventional processor, controller, microcontroller, or state machine. Aprocessor may also be implemented as a combination of computing devices,e.g., a combination of a DSP and a microprocessor, a plurality ofmicroprocessors, one or more microprocessors in conjunction with a DSPcore, or any other such configuration. Alternatively, some steps ormethods may be performed by circuitry that is specific to a givenfunction.

In one or more exemplary aspects, the functions described may beimplemented in hardware, software, firmware, or any combination thereof.If implemented in software, the functions may be stored as one or moreinstructions or code on a non-transitory computer-readable medium ornon-transitory processor-readable medium. The steps of a method oralgorithm disclosed herein may be embodied in a processor-executablesoftware module and/or processor-executable instructions, which mayreside on a non-transitory computer-readable or non-transitoryprocessor-readable storage medium. Non-transitory server-readable,computer-readable or processor-readable storage media may be any storagemedia that may be accessed by a computer or a processor. By way ofexample but not limitation, such non-transitory server-readable,computer-readable or processor-readable media may include RAM, ROM,EEPROM, FLASH memory, CD-ROM or other optical disk storage, magneticdisk storage or other magnetic storage devices, or any other medium thatmay be used to store desired program code in the form of instructions ordata structures and that may be accessed by a computer. Disk and disc,as used herein, includes compact disc (CD), laser disc, optical disc,DVD, floppy disk, and Blu-ray disc where disks usually reproduce datamagnetically, while discs reproduce data optically with lasers.Combinations of the above are also included within the scope ofnon-transitory server-readable, computer-readable and processor-readablemedia. Additionally, the operations of a method or algorithm may resideas one or any combination or set of codes and/or instructions on anon-transitory server-readable, processor-readable medium and/orcomputer-readable medium, which may be incorporated into a computerprogram product.

The preceding description of the disclosed embodiments is provided toenable any person skilled in the art to make or use the presentinvention. Various modifications to these embodiments will be readilyapparent to those skilled in the art, and the generic principles definedherein may be applied to other embodiments without departing from thespirit or scope of the invention. Thus, the present invention is notintended to be limited to the embodiments shown herein but is to beaccorded the widest scope consistent with the following claims and theprinciples and novel features disclosed herein.

What is claimed is:
 1. A server, comprising: a processor configured withprocessor-executable instructions to perform operations comprising:generating one or more ad inventory rules based on one or more inventoryhandling definitions; receiving a rules request message for a videosession from an ad router; generating a rules response message for thevideo session, the rules response message indicating at least one of theone or more ad inventory rules; and sending the rules response messagefor the video session to the ad router.
 2. The server of claim 1,wherein the processor is configured with processor-executableinstructions to perform operations such that the at least one of the oneor more ad inventory rules indicates that a programmer providing contentfor the video session allows for transfer of unused ad inventory for thevideo session.
 3. The server of claim 2, wherein the processor isconfigured with processor-executable instructions to perform operationssuch that the at least one of the one or more ad inventory rulesincludes one or more of an opportunity type limit, an ad type limit, aprogrammer limit, a network limit, a session limit, a time period limit,content type limit, and a break limit.
 4. The server of claim 2, whereinthe processor is configured with processor-executable instructions toperform operations further comprising: receiving ad metrics, wherein theprocessor is configured with processor-executable instructions toperform operations such that generating the one or more ad inventoryrules based on the one or more inventory handling definitions comprisesgenerating the one or more ad inventory rules based on the one or moreinventory handling definitions and the received ad metrics.
 5. Theserver of claim 4, wherein the processor is configured withprocessor-executable instructions to perform operations furthercomprising: generating forecast ad inventory levels based on thereceived ad metrics; and sending the forecast ad inventory levels to anetwork operator computing device.
 6. The server of claim 2, wherein theprocessor is configured with processor-executable instructions toperform operations such that the video session is a Video-On-Demand(VOD) session.
 7. A non-transitory processor readable medium havingstored thereon processor-executable instructions configured to cause aprocessor of a server to perform operations comprising: generating oneor more ad inventory rules based on one or more inventory handlingdefinitions; receiving a rules request message for a video session froman ad router; generating a rules response message for the video session,the rules response message indicating at least one of the one or more adinventory rules; and sending the rules response message for the videosession to the ad router.
 8. The non-transitory processor readablemedium of claim 7, wherein the stored processor-executable instructionsare configured to cause a processor of a server to perform operationssuch that the at least one of the one or more ad inventory rulesindicates that a programmer providing content for the video sessionallows for transfer of unused ad inventory for the video session.
 9. Thenon-transitory processor readable medium of claim 7, wherein the storedprocessor-executable instructions are configured to cause a processor ofa server to perform operations such that the at least one of the one ormore ad inventory rules includes one or more of an opportunity typelimit, an ad type limit, a programmer limit, a network limit, a sessionlimit, a time period limit, content type limit, and a break limit. 10.The non-transitory processor readable medium of claim 7, wherein thestored processor-executable instructions are configured to cause aprocessor of a server to perform operations further comprising:receiving ad metrics, wherein the stored processor-executableinstructions are configured to cause a processor of a server to performoperations such that generating the one or more ad inventory rules basedon the one or more inventory handling definitions comprises generatingthe one or more ad inventory rules based on the one or more inventoryhandling definitions and the received ad metrics.
 11. The non-transitoryprocessor readable medium of claim 10, wherein the storedprocessor-executable instructions are configured to cause a processor ofa server to perform operations further comprising: generating forecastad inventory levels based on the received ad metrics; and sending theforecast ad inventory levels to a network operator computing device. 12.The non-transitory processor readable medium of claim 7, wherein thestored processor-executable instructions are configured to cause aprocessor of a server to perform operations such that the video sessionis a Video-On-Demand (VOD) session.